package com.empire.module.member.service.warninggatherperson;

import com.empire.module.member.controller.admin.warninggatherperson.vo.*;
import com.empire.module.member.dal.dataobject.warninggatherperson.WarningGatherPersonDO;
import com.empire.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.List;

/**
 * 聚集预警参与人员关联表（1条记录对应1人参与1次聚集） Service 接口
 *
 * @author 主席大人
 */
public interface WarningGatherPersonService {

    /**
     * 创建聚集预警参与人员关联表（1条记录对应1人参与1次聚集）
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWarningGatherPerson(@Valid WarningGatherPersonSaveReqVO createReqVO);

    /**
     * 更新聚集预警参与人员关联表（1条记录对应1人参与1次聚集）
     *
     * @param updateReqVO 更新信息
     */
    void updateWarningGatherPerson(@Valid WarningGatherPersonSaveReqVO updateReqVO);

    /**
     * 删除聚集预警参与人员关联表（1条记录对应1人参与1次聚集）
     *
     * @param id 编号
     */
    void deleteWarningGatherPerson(Long id);

    /**
     * 获得聚集预警参与人员关联表（1条记录对应1人参与1次聚集）
     *
     * @param id 编号
     * @return 聚集预警参与人员关联表（1条记录对应1人参与1次聚集）
     */
    WarningGatherPersonDO getWarningGatherPerson(Long id);

    /**
     * 获得聚集预警参与人员关联表（1条记录对应1人参与1次聚集）分页
     *
     * @param pageReqVO 分页查询
     * @return 聚集预警参与人员关联表（1条记录对应1人参与1次聚集）分页
     */
    PageResult<WarningGatherPersonDO> getWarningGatherPersonPage(WarningGatherPersonPageReqVO pageReqVO);

    /**
     * 单条标记已读
     * @param id 聚集人员记录ID
     */
    void markSingleRead(Long id);

    /**
     * 批量标记已读
     * @param ids 聚集人员记录ID列表
     */
    void markBatchRead(List<Long> ids);
}